@database REMINDER @author "Ebbe Holleris Petersen" @$VER: Reminder.guide 5.9 (15.12.94) @node MAIN @title "Reminder Help" Reminder V5.9 Copyright 1991-94 by Ebbe Holleris Petersen Official release of version 5.9 Release date 15/12-94 E-mail: eep@sbi.dk @{" Introduktion " link HELP_INTRO } @{" What is Reminder? " link HELP_WHATISREM } @{" How to invoke Reminder and what it does " link HELP_INVOKEREMINDER } @{" The input window " link HELP_INPUT } @{" The setup window " link HELP_SETUP } @{" The alarm window " link HELP_ALARM } @{" The message window " link HELP_MESSAGE } @{" Reminder's config- and datafile " link HELP_CFG } @{" Facilities to be added in future versions " link HELP_ADDED } @{" What to do about bugs, criticism, suggestions etc." link HELP_WHATTODO } @{" Credits " link HELP_CREDITS } @endnode @node HELP_INTRO "Introduction" INTRODUCTION Reminder is Copyright 1991-94 by Ebbe Holleris Petersen, but can be freely distributed, providing that the following rules are respected: - No change is made to the program nor to the accompanying documentation. - The package is always distributed in its complete form consisting of 8 files: Reminder.68000, Reminder.68020+, Reminder.data, Changes, Reminder.guide, Reminder.info, Reminder.guide.info and Changes.info. - Every form of distribution is allowed and encouraged, but no fee can be charged for this program except for, possibly, the cost of magnetic media and/or disk duplication and shipping. - Inclusion in PD software libraries such as Fish Disks is allowed, provided the fees charged for these disks are comparable with those charged by Fred Fish. - The program cannot be distributed in any commercial product without the written consent of the author. By copying, distributing and/or using the program you indicate your acceptance of the above rules. Also remember that this program is supplied 'as is': the entire risk as to the quality of the program is to the user. In no event will the author be liable for direct or indirect damage or loss resulting from the use of this program. If you are the kind of person who just has to pay for the programs you use, I suggest you donate whatever amount you find will make you feel better to GreenPeace or WWF. The only thing I ask for is ideas and suggestions for additional features and improvements of Reminder. See @{" What to do about bugs, criticism, suggestions etc." link HELP_WHATTODO } for info of how to get in touch with me if you have any. Enjoy. @endnode @node HELP_WHATISREM "What is Reminder" WHAT IS REMINDER? I have a tendency to forget that there is a world around me and that time keeps running, when I am working with my A2000. Or in other words: Me and the rest of the world have a tendency to get out of sync you might say. I therefore decided to write a small commodity that would pop up now and then to remind me of the things I tended to forget. The result of this mental exercise I decided to call Reminder. So what does it do? Reminder keeps an eye on a list of messages and commands, which the user (you) wants to be shown and/or executed at a specific time or time intervals. Any or all of the timeparameters can be wildcards. Once every minute the list is checked, and if a match between the systemclock and a time specification is found a window will pop up, and the message(s) will be shown and/or the command(s) will be executed. Because Reminder is supposed to run as a backgroundprocess, it is designed to be memory efficient and use as little CPU time as possible. Should you however be the owner of an unexpanded A500, or for any other reason NOT want the program to run continuous, it is possible to make it show all messages for today at once, and then die (when using this option no commands will be executed). @endnode @node HELP_INVOKEREMINDER "How to invoke Reminder and what it does" HOW TO INVOKE REMINDER AND WHAT IT DOES Reminder is run from the CLI simply by typing: [RunBack] Reminder [X] [Y] [MODE=RUN/CHECK/CLI] Running Reminder without any options is equivalent to: Reminder X=372 Y=0 MODE=RUN Commandline options overrides default values, and values found in the configfile. Reminder (and Reminder.info) can also be put in the WBStartup drawer. In this case X, Y and MODE can be added as tool types in the icon. >>> IF YOU HATE TO READ LONG MANUALS <<< take a break here, run Reminder and try selecting 'alarm', 'input' or 'setup' from Reminders menu. This should give you an idea of what the program does (it may be an idea to copy the file Reminder.data to S: first though). (Ok, break over...) Reminder is very tolerant when it comes to low memory conditions - it simply remembers what it wasn't able to do, and then tries again (about once every second) until it succeeds. Only a few things will make Reminder close down and exit: - Not being able to open the needed libraries (intuition V36+, graphics V36+, commodities V36+, gadtools V36+, diskfont V33+ or reqtools V38+). - Not being able to allocate space for it's datafile. - Not being able to install it's inputhandler. - Not being able to open input and timer device. Since none of these situations are likely to happen you will probably not experience any problems. When Reminder is run it attempts to open the file ENV:Reminder/Config. If found it will load setup info and name of the datafile to use. Any commandline options will override the options found in the configfile. It then attempts to open the datafile specified in configfile, or the file S:Reminder.data if no configfile was found. If no configfile and/or datafile is found, or if the file(s) are not Reminder file(s) Reminder will state the fact, and then use it's default setup, and start with an empty list of messages/commands. If any of the messages/commands read from the datafile have become obsolete, i.e. were to be shown yesterday or before yesterday and never again, they will be deleted from the message/command list. Reminder will then attempt to save the updated list, thereby deleting the existing one. This operation will be repeated every 24 hours (at midnight). Note that as of version 5.7, Reminder no longer can read V2.0 datafiles. Reminder V3.0 - V5.8 config and datafiles doesn't need any special attention. The old config and datafile will (if needed) automatically be updated the first time Reminder V5.9 is run. If you have been using Reminder V5.6 (or an older version) and the file S:Reminder.cfg is found, it will be deleted, and the files ENVARC:Reminder/Config and ENV:Reminder/Config will be created in stead. Unless told otherwise in it's configfile, Reminder by default opens a small clock in the upper right corner of the Workbench screen, showing the time, and how much fast & chip memory is available. If you don't like the position of the clock window, it can be moved to a different position, just like any other window. Likewise it's contents can be changed or Reminder can be instructed not to open any clock window at all. You can quit Reminder by: - selecting 'Quit' in the menu. - clicking on the close gadget in the clock window. - or by pressing +'q' (default: + ) simultaneously. - or remove it using the commodities control program ExChange. (if any other Reminder windows are open they will be closed to). @endnode @node HELP_INPUT "The input window" THE INPUT WINDOW The Input window can be opened in two ways: - if the clock window is open, by selecting 'Input' in it's menu. - by pressing + simultaneously when no Reminder windows (except the clock window) are open. This window consists of two main parts: A calendar showing two months, and a list of messages/commands, and the time when they are to be shown/ executed. First time the input window is opened, the calendar will show the month in which we are (today will be highlighted), and the following month. The message/command list will contain all messages/commands to be shown/ executed today (if any), and the first empty message/command will be highlighted. You use the calendar in the following way: Next month: Will advance the calendar one month. The same can be achieved by pressing or and cursorkey 'up'. Prev month: Will recede the calendar one month. The same can be achieved by pressing or and cursorkey 'down'. Today: Resets the calendar to the present date. Pointing to a date in the calendar and pressing the left mousebutton selects (highlights) it, and displays any messages/commands for this date. The list will be sorted according to when the messages/commands are to be shown/executed. After having selected a date in the above described way, you have a list of messages/commands ready to be edited. This is done in the following way: To select a message/command to edit, you press the cursorkeys 'up' and 'down' until the one you want to edit is highlighted. To add a new message/command just select the last (empty) entry in the list. Pressing the cursorkeys 'left' or 'right' or the key 'Return' will make reminder enter edit mode, and allow you to edit the selected message. The same keys are used to select what parameter to edit (or point and click). A message/command can also be selected with the mouse. Selecting a highlighted message/command will enter edit mode. In edit mode, the cursorkeys 'up' and 'down' have a different function. Pressing cursorkey 'up' or 'down', will now change the highlighted timeparameter, by moving through the legal range of values + wildcard. In stead of the cursorkey you can also enter minutes, hours, days and months directly using the numeric keys (and ? for wildcard). To delete a message from the list use the following procedure: - Select the message to be deleted. - 1) Press 'Delete' OR - 2) Enter edit mode. - clear the fields 'Message' AND 'Command'. - Leave edit mode, and the message will be removed from the list (no matter what timespecification has been entered.) Pressing the mouse-menu-button, 'ESC' or 'shift+return' in edit mode will make Reminder leave edit mode, but while the mouse-menu-button and 'ESC' ignores any changes made, 'shift+return' keeps them. The timespecification consists of the following: From and To: These fields specify a timeinterval in which the message/command is to be shown/executed. Note that by careful manipulation it is possible to select a non existing date like 31 feb. Also there is made no attempt to check if the From date lies before the To date. It is left entirely up to the user to enter meaningful data, so: Garbage in = Garbage out. It won't harm, but it won't work either!!!. Pattern and Weekdays: These fields specify at what time, date and weekdays the message/ command is to be shown/executed. If 'From' and 'To' are specified 'Pattern' only applies to this interval. Se note above. Day Count: Tells Reminder the maximum number of times to show/execute a message/command within one day. This is very useful, for example if you want a message/command to be shown/executed as soon as the program is run. You would do this by setting hour and minute to wildcards, but then the message/command would be shown/executed once every minute. To avoid this, set count to 1 (one), and it will be shown only once. Total Count: Tells Reminder the total number of times to show/execute a message/ command over one or several days. Note that reminder must be allowed to update it's datafile each time it has shown/executed a message/command that has a Total Count != '??'. So if Reminders datafile or the disk it is located on is write protected this option will *NOT* work properly. Message: The message you want to be shown (if any). It can be up to 70 characters long. Note that you may enter a message, a command *OR* both for the same timespecification. Message is a stringgadget, and therefore all the standard key combinations like + to undo any changes, + to clear the message and so forth will work. Likewise for command, and any other stringgadget used in Reminder. Command: This line will be executed as a command. You type a command the same way you would do from the CLI. If a command is in your system search path you don't have to specify the whole path. example#1: fh0:tools/play fh0:sounds/dingdong example#2: fh0:utilities/backup fh0: fh1: dh0: example#3: "fh0:space in name" arg1 arg2 arg3 The command line may be up to 240 characters long. Do *NOT* make any assumptions about the order in which messages/ commands that are to be shown/executed at the same time will be shown/executed. Copy: Will make a copy of the highlighted (or selected) message. Show all: Will display a complete list of all messages/commands presently in the system. This list can also be edited. Ok or Close gadget: Will quit the input window, and if you have modified, added or deleted any messages/commands, Reminder will attempt to save the modified datafile. Cancel or ESC-key (if not in edit mode): Will undo any changes made since the input window was opened, and then quit the input window. To see examples of messages and use of wildcards, an examples datafile (Reminder.data) is supplied. Copy this file to your S: directory, or assign S: to whereever the file is located. Then simply run Reminder. @endnode @node HELP_SETUP "The setup window" THE SETUP WINDOW The setup window can be opened in four ways: - If the clock window is open, by selecting 'Setup' in it's menu. - by pressing 'show interface' in the commodities control program 'ExChange'. - by pressing + simultaneously when no Reminder windows (except the clock window) are open. - by running a second copy of Reminder. The setup window will then pop up showing the following options: Clock format: This option tells Reminder what to show in the clock window. There are some 48 different combinations to chose from. Note that seconds can't be selected unless you also have selected time, and seconds will automatically be deselected should you deselect time. Deselecting all options will quit the clock window. Default: Chip, Fast and Time. Hotkey sequence: Allows you to select your very own hotkey sequence, if you for some reason don't like the default one. This hotkey sequence is used in connection with 'a', 'i', 's' and 'q' to activate the alarm, setup and input window and to quit Reminder. It can be changed any time, and the changes will take effect as soon as the setup window is closed. Note that no special effort has been made to keep the user from choosing impractical or downright stupid hotkey sequences like + + or no hotkey sequence at all. Default: +. Run/Check/Cli check (commandline options or tool types: MODE=run/check/cli): If it is set to "Check" Reminder will check its message list, and if any messages are to be shown today, it will open a window and display them. Commands are neither shown nor executed, when using this option. When the user close's the message window Reminder will exit and die. The option "Cli check" essentially does the same, but it uses the CLI from which it was run to display any messages, and then dies immediately. The option "Run" of cause means, that Reminder will keep on running, and only show messages and execute commands at the specified times. If you change it from 'Run' to 'Check' or 'Cli check', the change won't take effect until the next time you run Reminder. Once you have done that, you have to run Reminder with MODE=run to change it again, since otherwise Reminder will quit before you can change it. Default: Run. Clock to front/No clock to front: "Clock to front" tells Reminder that Whenever the clock window is obscured by an other window on the Workbench it is to be moved in front, thereby always being visible. "No clock to front" means ... well guess. The "Clock to front" option is only available if the layers library was found. Default: Clock to front. WB screen to front/Flash screen: This option tells Reminder how to signal that it has a message for you: Move the Workbench screen to the front, or flash all screens. default: WB screen to front. Font: Allows you to select the font that Reminder will use, for all its windows. When you change the font, the change will take effect for the clock window (if open) immediately, and for alarm, input, setup and message windows next time they are opened. NOTE that if a window gets to big using the specified font, Reminder defaults to topaz 8. Default: Default screen font. Priority: This is the priority, with which Reminder is running. Can be in the range -10 to 10, but should be in the range 1 to 5. Default: 5. Clock x & Clock y (commandline options and tool types: X= & Y=): These are the coordinates of the upper left corner of the clock window. Simply type in the coordinates where you which the clock window to be displayed. Illegal values will be changed to closest legal value. If the clock window is moved Clock x and Clock y will be updated to reflect the new position. Default: X=372, Y=0. Filename: This tells Reminder under which name to save/load/reload its datafile. A empty string will not be accepted. Default: S:Reminder.data Alarm message: This is the string to be displayed when you use Reminders alarm facility. Default: Alarm. Alarm command: This command will be executed when you use Reminders alarm facility. (No default command). Cancel or ESC-key: Reset options to what they were before setup window was opened. Then exit setup window. Ok or Close gadget: Use present setup. Then exit setup window. Save: Save present setup to configfile. Use present setup, and exit setup window. @endnode @node HELP_ALARM "Alarm" THE ALARM WINDOW The Alarm window can be opened in two ways: - If the clock window is open, by selecting 'Alarm' in it's menu. - by pressing + simultaneously when no Reminder windows (except the clock window) are open. The alarm window will then open, displaying the number of minutes until the next alarm, or be empty if no alarm is set. Just change this number to any other number (0-999) you like, then close the window by pressing 'Ok'. Pressing 'Cancel' will cancel the alarm function, no matter what number was entered. After the requested number of minutes has passed, the message/command specified in the setup window will be shown/ executed. If the alarm window is opened a second time, before the requested number of minutes has passed, the stringgadget will contain the number of minutes left before the alarm, and the "countdown" will be halted until the alarm window is closed again. You could of cause use the normal message+timespecification in stead of this feature, but often what you need is to be reminded that a movie begins in 15 minutes or your pizza is finished in 20 minutes etc. For situations like this the alarm function is both easier and faster to use. Since this type of request is considered a "second class" request, Reminder won't save it in it's datafile. Therefore it will be forgotten after a reset. Some would call this a drawback, I call it a feature. @endnode @node HELP_MESSAGE "The message window" THE MESSAGE WINDOW The message window can only be opened by Reminder. It will do so whenever it has a message for you. Up to 6 messages can be shown at once. If there are more than 6 messages, you can use the scrollbar or and to scroll through them. The window will stay open until you click a mousebutton anywhere in it. After the message window has been opened, Reminder will add additional messages to those already shown, until the user closes the window. It is closed by pressing a mouse anywhere in the window, or by pressing the ESC key. Whenever Reminder opens the message window, or adds new messages to those already shown, it attempts to open the input device, and send a "harmless" message through the device. As a harmless message I chose a mousemove event with dx,dy = 0,0. The reason for this is: - When intuition opens a window it also activates the display. Any screenblanker (DMouse, QMouse etc.) running, would not be notified of this, since opening a window does not generate an event. So if the screenblanker had deactivated the screen, when Reminder opened it's message window, the screen would be reactivated without the screenblanker being notified of this. It would therefore stay this way instead of being deactivated again after a certain time. A (fake) mousemove event, will make the screenblanker think that the mouse was moved, and it therefore will activate the screen, and deactivate it again after some time if the user is not using the machine. - When Reminder updates a already open message window, the display is not activated, so if a screenblanker is running, and has deactivated the display, the user would not be able to see the new message(s) (The user may still be able to see the screen even if he is not using the machine). The fake mousemove event was the most neutral event I could come up with, that would mean nothing to any program except a screenblanker. In the (very) unlikely event that any of your programs start doing things on there own, because they interpret it as a command, notify me of the problem, and I will try to come up with a better "harmless event". @endnode @node HELP_CFG "Reminder's config- and datafile" REMINDER'S CONFIG- AND DATAFILE The files generated by Reminder are ASCII files, which can be viewed with any texteditor or textviewer. You can therefore also change them by using an editor. This is NOT encouraged, since Reminder only makes a limited check to see if the data it reads is valid. An error in the datafile, may therefore go undetected, and Reminders behavior will be unpredictable, and very likely NOT a pretty sight. Before using a config- or datafile Reminder makes sure, that it really is a Reminder file. If not the user is informed, the file ignored, and no harm is done. If a datafile is partly damaged, Reminder will recover as much of the file as possible, and ignore the rest. Note that if you like the default values for format, hotkey etc. you don't need a config file (if Reminder doesn't find a config file it will simply use it's built-in default values). The datafile just have to be saved under the (default) name S:Reminder.data. The first line in a data or configfile identifies the file as a Reminder Vx.x file. Note however, that the version number not necessarily corresponds to the version number displayed by Reminder (Reminder V5.9 generates V5.7 datafiles and V5.5 configfiles). The version number simply states the oldest version of Reminder that will work with this particular data or configfile. @endnode @node HELP_ADDED "Facilities to be added in future versions" FACILITIES TO BE ADDED IN FUTURE VERSIONS. - Show/Highlight holidays. - Option that instructs Reminder to show all messages that should have been shown since last time Reminder was run. - Keyboard combinations to select dates in the calendar. - Option to instruct Reminder to show a message with a specific interval, for example every 7 minutes and 12 seconds. @endnode @node HELP_WHATTODO "What to do about bugs, criticism, suggestions etc." WHAT TO DO ABOUT BUGS, CRITICISM, SUGGESTIONS ETC. If you want to get in touch you can reach me on the following address: Ebbe Holleris Petersen Vesterbrogade 120D, st.th. 1620 K benhavn V Denmark Phone: +45 31313010 E-mail: eep@sbi.dk @endnode @node HELP_CREDITS "Credits" CREDITS Finally ThanX to my friends Flemming Jacobsen, Thomas Gade, Thomas Veber Jensen, Anders Melchiorsen and everybody else who has helped me test Reminder, and for there various suggestions for changes and improvements. This program would not have had half it's facilities without them, nor would it have been so easy to use(?). Also ThanX to the following persons, whose source code and/or programs have served as examples and inspiration when I wrote Reminder: Matthew Dillon, Steve Drew, Carlo Borreo & Cesare Dieni for Shell4.01 Brian Moats for Mach1.6 Rob Peck, Dan Barrett & Tim Maffett for Runback Commodore for blowing those PC's out of the water by giving us the *Amiga* @endnode